/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package tablasSql;

import java.sql.ResultSet;
import java.sql.SQLException;
import otros.MiTableModel;

/**
 *
 * @author FERRETERIA
 */
public class Stock {
        
    public static MiTableModel getArticulosStock(String criterio, String dato) {
        String[] columNames = {"Codigo","Detalle", "Stock"}; 
        String[] tableNames = {"Codigo","Detalle", "stockactual"}; 
        Class [] tipos = {Integer.class, String.class, Float.class}; 
        
        String sql = "SELECT Codigo, Detalle, stockactual from narticulos, nstock";
        sql += " where narticulos.id = nstock.articulo";
        String contar = "narticulos";
        String aux = "";
        if (!dato.isEmpty()) {
            sql += " and ";
            contar += " where ";
            if (criterio.compareTo("Detalle") == 0) 
                aux += criterio + " like '%" + dato + "%'";
            else 
                aux += criterio + " = '" + dato + "'";
        }
        sql += aux;
        contar += aux;
        
        Object[][] dtDatos = new Sql().GetTabla(tableNames, contar, sql, tipos);
            
        return new MiTableModel(dtDatos,columNames);    
        //return new Util.MiDefaultTableModel(dtDatos,columNames);    
    }

    
    public static ResultSet getStockArt (String cod) {
        String sql = "Select * from nStock where articulo = '" + Articulos.getId(cod) + "'";
        return new Sql().getDatos(sql);
    }
    
    public static void guardar (String [] datos, boolean guardar) {
        String sql = "";   
        int numString = 0;
        if (!guardar) {
           sql = "update nstock set stockactual = ?, fecharegularizado = ?, fechaanteriorreg = ? ";
           sql += "where articulo = ?";
           numString = 4;
        }
        else {
            sql = "insert into nstock (articulo, stockactual, fechastockinicial, fecharegularizado, fechaanteriorreg ";
            sql += "values (?,?,?,?,?)";
            numString = 5;
        }
        new Sql().actualizarDatos(sql, datos, 5,0);
    }
    
    public static void guardar (String [] datos) {
        String sql = "insert into nstock (articulo, fechastockinicial, stockactual) values (?,?,?)";
        new Sql().actualizarDatos(sql, datos, 2,0);    
    }
    
    public static void borrar(String id) {
        String sql = "delete from nstock where articulo = " + Articulos.getId(id);
        new Sql().hacerConsulta(sql);
    }
    
    public static float menosStock(String id, float cantidad) {
        String sql = "update nstock SET stockactual=(stockActual - " + cantidad + ") where articulo=" + Articulos.getId(id);
        new Sql().hacerConsulta(sql);
        return getStock(id);
    }
    
    public static float menosStock(String id, float cantidad, String fecha) {
        
        String sql = "update nstock SET stockactual=(stockActual - " + cantidad + "), fechaanteriorReg = fechaRegularizado,"
                + " fechaRegularizado = '" + fecha + "' where articulo=" + Articulos.getId(id);
        new Sql().hacerConsulta(sql);
        return getStock(id);
    }
    
    public static float getStock (String id) {
        String sql = "select stockactual from nstock where articulo = " + Articulos.getId(id);
        ResultSet r = new Sql().getDatos(sql);
        try {
            if (r.next())
                return r.getFloat("stockactual");
        } catch (SQLException ex) {
            return -1;
        }
        return -1;
    }
    
    public static void cambiarStock(String id, float cantidad, String fecha) {
        String sql = "update nstock SET stockactual=" + cantidad + ", fechaanteriorReg = fechaRegularizado,"
                + " fechaRegularizado = '" + fecha + "' where articulo=" + Articulos.getId(id);
        new Sql().hacerConsulta(sql);
    }
}
